package com.atguigu.gamll.realtime.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisUtil {

    private static JedisPool jedisPool;

    private static void initJedisPool() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 最小的闲置连接数
        jedisPoolConfig.setMinIdle(5);
        // 最大的闲置连接数
        jedisPoolConfig.setMaxIdle(5);
        // 池中的最大连接数
        jedisPoolConfig.setMaxTotal(100);
        // 池中连接被用完后，是否等待，只有true时，下边的 MaxWaitMillis才会生效
        jedisPoolConfig.setBlockWhenExhausted(true);
        // 最大等待时间，超时后会报错
        jedisPoolConfig.setMaxWaitMillis(2000);
        // ture，得到的jedis实例均是可用的，如果获取到不可用的，会从池中移除，尝试获取一个新的连接
        jedisPoolConfig.setTestOnBorrow(true);

        jedisPool = new JedisPool(jedisPoolConfig, "hadoop102", 6379, 10000);
    }

    public static Jedis getJedis() {
        if (jedisPool == null) {
            initJedisPool();
        }
        System.out.println("创建redis客户端");
        return jedisPool.getResource();
    }

    public static void main(String[] args) {
        Jedis jedis = getJedis();
        String pong = jedis.ping();
        System.out.println(pong);
    }
}
